package org.example.study2;

// 实现读取一个文件的所有内容。
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
public class ReadFile1 {
    public static void main(String[] args) throws IOException {
        // 1. 创建一个文件对象，用于表示磁盘上文件的路径（文本文件内容abc)
        File file = new File("D:/temp/abc.txt");
        // 2. 基于文件对象创建一个输入流。这个流就像是连接程序和文件的一座“数据桥梁”
        FileInputStream inputStream = new FileInputStream(file);

        // 3. 循环读取内容，直到文件末尾
        while (true) {
            // 4. 从“数据桥梁”中读取一个字节的数据。
            //    read()方法每次调用都会从文件中读取一个字节（8位），并将其转换为一个0到255之间的int值。
            //    如果已经到达文件的末尾，没有任何数据可读了，则返回-1。
            int data = inputStream.read();

            // 5. 检查是否读到文件末尾。如果返回值为-1，说明文件已经全部读取完毕。
            if (data == -1) {
                // 6. 使用break语句跳出无限循环while(true)
                break;
            }

            // 7. 打印读取到的数据内容
            System.out.println(data);
        }
        // 8. 关闭打开的文件流。这是一个非常重要的操作，可以释放文件句柄和系统资源。
        //    如果不关闭，可能会导致资源泄漏，其它程序无法访问该文件。
        inputStream.close();
    }
}
